// 1  引入
// 2 创建实例
// 3 配置参数
// 4 请求拦截 相应拦截的配置
// 5  导出
import axios from 'axios'

// import { showToast } from 'vant';

import { showSuccessToast, showFailToast } from 'vant'

let baseURL = import.meta.env.VITE_BASE_URL // 根据环境去获取基础路径

const request = axios.create({
  baseURL, //基础路径
  timeout: 5000,
})

console.log(import.meta.env.VITE_BASE_URL)

// 给实例添加请求拦截器
request.interceptors.request.use(
  (config) => {
    //  请求拦截的时候配置
    //   本地缓存获取  登录成功就存储到本地缓存
    let token = localStorage.getItem('token') || ''
    token && (config.headers.token = token)

    return config
  },
  (err) => {
    return Promise.reject(err)
  }
)

// 给实例添加请求响应拦截器
// 1 第一次登录成功了 后台返回数据里面含有token
// 2 相应回来的数据有可能是成功 也有可能是失败
// 3  成功里面 还有可能是 code 不等于200

request.interceptors.response.use(
  (res) => {
    if (res.data?.data?.token) {
      localStorage.setItem('token', res.data.data.token)
    }

    //  统一给出提示
    res.data.code == 200
      ? showSuccessToast(res.data.message)
      : showFailToast(res.data.message)

    return res.data
  },
  (err) => {
    //根据后台进行协商 判断状态码

    return Promise.reject(err)
  }
)

// 后期使用这个实例发送请求，就会有上面的默认配置
export default request
